﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Jardin_Informativo_Agua_Tierra
{
    public partial class RegistrarParvulos : Form
    {
        public RegistrarParvulos()
        {
            InitializeComponent();
        }
        JardinInformativoBDEntities BEDE = new JardinInformativoBDEntities();
        Validacion v = new Validacion();
        Generador g = new Generador();


        private void LimpiarFormulario()
        {
            RegistrarParvulos nuevo = new RegistrarParvulos();
            nuevo.TopLevel = false;
            nuevo.Parent = this.Parent;
            nuevo.Show();
            this.Close();
        }

        public void boton_eliminar()
        {
            if (lbx_Convivientes.Items.Count == 0) { btn_BorrarPersona.Enabled = false; }
            else { btn_BorrarPersona.Enabled = true; }
        }

        int padreyaexiste = 0;
        int madreyaexiste = 0;
        int apoderadoyaexiste = 0;
        int tieneretiro = 0;

        // se declaran variables para la validacion de los datos... ==========================================================
        //============================= VALIDADORES PARA EL NIÑO =================================================
        int valnombreniño;
        int valapellidopaterno;
        int valapellidomaterno;
        int valfechanacimiento;
        int valrut;
        int valnivel;
        int valfechaingreso;
        int valdireccioncomuna;
        int valdireccioncalle;
        int valdireccionnumero;
        //============================= VALIDADORES PARA ALIMENTACIÓN ============================================
        int valalergiaalimento;
        int valpreferenciaalimento;
        int valcomidaniño;
        //============================= VALIDADORES PARA EL APODERADO ============================================
        int valnombreapoderado;
        int valapellidopapoderado;
        int valapellidomapoderado;
        int valrutapoderado;
        int valfonoapoderado;
        int valcelularapoderado;
        int vallugartrabajoapoderado;
        int valmailapoderado;
        //============================= VALIDADORES DATOS EMERGENCIA =============================================
        int valnombreemergencia;
        int valapellidopemergencia;
        int valapellidomemergencia;
        int valcelularemergencia;
        int valmailemergencia;
        //============================= VALIDADORES SALUD GENERAL ================================================
        int valsituacionembarazo;
        int valindicacionesespecialessalud;
        int valenfermedadessufridas;
        int valhasidooperado;
        //============================= VALIDADORES SALUD FICHA ==================================================
        int valestadonutricional;
        int valestadogeneral;
        int valmedicamentosprohibidos;
        int valindicacionesespeciales;
        int valdeposiciones;
        int valcompartepieza;
        int valcompartecama;
        int valdianostico;
        int valvisitaespecialista;
        //============================= VALIDADORES PADRES ======================================================
        int valnombrepadre;
        int valapellidoppadre;
        int valapellidompadre;
        int valrutpadre;
        int valfonopadre;
        int valcelupadre;
        int valtrabajopadre;
        int valmailpadre;

        int valnombremadre;
        int valapellidopmadre;
        int valapellidommadre;
        int valrutmadre;
        int valfonomadre;
        int valcelumadre;
        int valtrabajomadre;
        int valmailmadre;
        //============================= VALIDADORES SITUACION FAMILIAR ==========================================
        int valsituacionfamiliar;
        int valconvivientes;
        //============================= VALIDADORES CONVIVIENTES ================================================
        int valnombreconviviente;
        int valapellidopconviviente;
        int valapellidomconviviente;
        //int valedadconviviente;
        int valparentesco;
        int valocupacion;
        //============================ VALIDADORES ENCARGADOS PAGO ==============================================
        int valnombrepagos;
        int valapellidoppagos;
        int valapellidompagos;
        int valmailpagos;
        int valcelupagos;
        //==================================================================================================================

        private void button1_Click(object sender, EventArgs e)
        {
            string x = tab_DatosNiño.SelectedTab.Name.ToString();
            tab_DatosNiño.SelectTab("Niño");
            //revision datos del niño...
            tbx_NombreNiño.Focus();
            tbx_ApellidoPaterno.Focus();
            tbx_ApellidoMaterno.Focus();
            dtp_Nacimiento.Focus();
            tbx_DigitoVerificador.Focus();
            cbx_NivelNiño.Focus();
            dtp_Ingreso.Focus();
            tbx_DireccionComuna.Focus();
            tbx_DireccionCalle.Focus();
            tbx_DireccionNro.Focus();
            tbx_AlergiaAlimento.Focus();
            tbx_PreferenciaAlimento.Focus();
            nud_VasosLeche.Focus();

            //revision datos del apoderado...
            tbx_NombreApoderado.Focus();
            tbx_ApellidoPApoderado.Focus();
            tbx_ApellidoMApoderado.Focus();
            tbx_DigitoVerificadorApoderado.Focus();
            tbx_TelefonoApoderado.Focus();
            tbx_CelularApoderado.Focus();
            tbx_LugarTrabajoApoderado.Focus();
            tbx_MailApoderado.Focus();

            //revision datos de emergencia...
            tbx_NombreEmergencia.Focus();
            tbx_ApellidoPEmergencia.Focus();
            tbx_ApellidoMEmergencia.Focus();
            tbx_CelularEmergencia.Focus();
            tbx_MailEmergencia.Focus();

            // revision datos encargado pagos
            tbx_Nombrepago.Focus();
            tbx_ApellidoPPagos.Focus();
            tbx_ApellidoMPagos.Focus();
            tbx_FormaPago.Focus();
            tbx_MailPagos.Focus();

            tab_DatosNiño.SelectTab("Salud");

            //revision datos salud general...
            tbx_SituacionEmbarazo.Focus();
            tbx_IndicacionesEspecialesSalud.Focus();
            tbx_EnfermedadesSufridas.Focus();
            //tbx_HaSidoOperado.Enabled = true;
            tbx_HaSidoOperado.Focus();

            tbx_EstadoNutricional.Focus();
            tbx_EstadoGeneral.Focus();
            tbx_MedicamentosProhibidos.Focus();
            tbx_IndicacionesEspeciales.Focus();
            cbx_Mañana.Focus();
            cbx_Tarde.Focus();
            cbx_Noche.Focus();
            tbx_CompartePieza.Enabled = true;
            tbx_CompartePieza.Focus();
            tbx_CompartePieza.Enabled = false;
            tbx_ComparteCama.Enabled = true;
            tbx_ComparteCama.Focus();
            tbx_ComparteCama.Enabled = false;
            tbx_EstadosOtros.Focus();
            tbx_VisitaEspecialistas.Focus();

            tab_DatosNiño.SelectTab("Familia");
            tbx_NombrePadre.Focus();
            tbx_ApellidoPPadre.Focus();
            tbx_ApellidoMPadre.Focus();
            tbx_DigitoPadre.Focus();
            tbx_FonoPadre.Focus();
            tbx_CeluPadre.Focus();
            tbx_TrabajoPadre.Focus();
            tbx_MailPadre.Focus();
            tbx_NombreMadre.Focus();
            tbx_ApellidoPMadre.Focus();
            tbx_ApellidoMMadre.Focus();
            tbx_DigitoMadre.Focus();
            tbx_FonoMadre.Focus();
            tbx_CeluMadre.Focus();
            tbx_TrabajoMadre.Focus();
            tbx_MailMadre.Focus();
            lbx_Convivientes.Focus();
            btn_GuardarNiño.Focus();

            tab_DatosNiño.SelectTab(x);
            btn_GuardarNiño.Focus();
            int valniño = valnombreniño * valapellidopaterno * valapellidomaterno * valfechanacimiento * valrut * valnivel * valfechaingreso * valdireccioncomuna * valdireccioncalle * valdireccionnumero;
            int valapoderado = valnombreapoderado * valapellidopapoderado * valapellidomapoderado * valrutapoderado * valfonoapoderado * valcelularapoderado * vallugartrabajoapoderado * valmailapoderado;
            int valemergencia = valnombreemergencia * valapellidopemergencia * valapellidomemergencia * valcelularemergencia * valmailemergencia;
            int valdatospagos = valnombrepagos * valapellidoppagos * valapellidompagos * valcelupagos * valmailpagos;
            int valsaludgeneral = valsituacionembarazo * valindicacionesespecialessalud * valenfermedadessufridas * valhasidooperado;
            int valsaludficha = valestadonutricional * valestadogeneral * valmedicamentosprohibidos * valindicacionesespeciales * valdeposiciones * valcompartepieza * valcompartecama * valdianostico * valvisitaespecialista;
            int valfamilia = valnombrepadre * valapellidoppadre * valapellidompadre * valrutpadre * valfonopadre * valcelupadre * valtrabajopadre * valmailpadre * valnombremadre * valapellidopmadre * valapellidommadre * valrutmadre * valfonomadre * valcelumadre * valtrabajomadre * valmailmadre * valconvivientes;
            int validartodo = valniño * valapoderado * valemergencia * valdatospagos * valsaludgeneral * valsaludficha * valfamilia;
            if (validartodo == 0)
            {
                string Mensaje = "No se puede almacenar el registro, pues\nexiste información erronea o incompleta. Por favor\nrevise las siguientes secciones :\n";
                if (valniño == 0) { Mensaje += "\n   >> Antecedentes del Niño..."; }
                if (valapoderado == 0) { Mensaje += "\n   >> Antecedentes Apoderado..."; }
                if (valemergencia == 0) { Mensaje += "\n   >> En caso de emergencia, avisa a..."; }
                if (valdatospagos == 0) { Mensaje += "\n   >> Antecedentes Responsable de pagos..."; }
                if (valsaludgeneral == 0) { Mensaje += "\n   >> Datos Generales... (Salud)"; }
                if (valsaludficha == 0) { Mensaje += "\n   >> Datos del Desarrollo..."; }
                if (valfamilia == 0) { Mensaje += "\n   >> Antecedentes de la Familia..."; }
                MessageBox.Show(Mensaje, "ERROR AL GUARDAR LOS DATOS.", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                MessageBox.Show("ValNombrePadre = " + valnombrepadre.ToString() + "\nValApellidoPPadre = " + valapellidoppadre.ToString() + "\nValApellidoMPadre = " + valapellidompadre.ToString() + "\nValRutPadre = " + valrutpadre.ToString() + "\nValFonoPadre = " + valfonopadre.ToString() + "\nValCeluPadre = " + valcelupadre.ToString() + "\nValTrabajoPadre = " + valtrabajopadre.ToString() + "\nValMailPadre = " + valmailpadre.ToString() + "\nValNombreMadre = " + valnombremadre.ToString() + "\nValApellidoPMadre = " + valapellidopmadre.ToString() + "\nValApellidoMMadre = " + valapellidommadre.ToString() + "\nValRutMadre = " + valrutmadre.ToString() + "\nValFonoMadre = " + valfonomadre.ToString() + "\nValCeluMadre = " + valcelumadre.ToString() + "\nValTrabajoMadre = " + valtrabajomadre.ToString() + "\nValMailMadre = " + valmailmadre.ToString() + "\nValConvivientes = " + valconvivientes.ToString(), "ERRORES", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                //try
                //{
                    int d = v.ComprobarFichaParvulo(tbx_Rut.Text);
                    if (d == 1)
                    {
                        MessageBox.Show("La ficha del parvulo que intenta registrar ya existe en sistema. Por favor revise las fichas del sistema y corrobore el rut del parvulo.", "ERROR DE CONSISTENCIA.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        /////////////////////////////////////////////////////////////////// SE CREA UN NUEVO ELEMENTO DE PARVULO /////////////////
                        Parvulo P = new Parvulo();
                        int codfichaparvulo = g.GenCodFicha(tbx_Rut.Text);
                        P.folio_ficha = codfichaparvulo;
                        P.nombre = tbx_NombreNiño.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPaterno.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMaterno.Text.Replace(" ", "·").ToString();
                        P.alergia_alimento = tbx_AlergiaAlimento.Text;
                        P.cant_agua = int.Parse(nud_VasosAgua.Value.ToString());
                        P.cant_fruta = int.Parse(nud_PorcionFruta.Value.ToString());
                        if (rad_CompartePiezaNo.Checked == true) { P.comp_pieza = tbx_CompartePieza.Text; }
                        else
                        {
                            if (rad_CompartePiezaSi.Checked == true)
                            {
                                P.comp_pieza = "SI, " + tbx_CompartePieza.Text;
                            }
                        }
                        if (rad_ComparteCamaNo.Checked == true) { P.comp_cama = tbx_ComparteCama.Text; }
                        else
                        {
                            if (rad_ComparteCamaSi.Checked == true)
                            {
                                P.comp_cama = "SI, " + tbx_ComparteCama.Text;
                            }
                        }

                        P.domicilio = tbx_DireccionCalle.Text + " #" + tbx_DireccionNro.Text + " ," + tbx_DireccionComuna.Text;
                        P.edad_marzo = g.GenEdadEnMarzo(dtp_Nacimiento.Value);
                        P.fecha_ingreso = dtp_Ingreso.Value.Date;
                        P.fecha_matricula = DateTime.Now.Date;
                        P.fecha_nacimiento = dtp_Nacimiento.Value.Date;
                        if (rad_Papilla.Checked == true) { P.hoy_come = rad_Papilla.Text.ToString().ToUpper(); }
                        else
                        {
                            if (rad_Picados.Checked == true) { P.hoy_come = rad_Picados.Text.ToString().ToUpper(); }
                            else
                            {
                                if (rad_Comida.Checked == true) { P.hoy_come = rad_Comida.Text.ToString().ToUpper(); }
                            }
                        }

                        if (cbx_Chupete.Checked == false && cbx_Mamadera.Checked == false && cbx_Tuto.Checked == false && cbx_PañalNoche.Checked == false && cbx_Otro.Checked == false)
                        {
                            P.objetos_uso = "NINGUNO.";
                        }
                        else
                        {
                            string usa = "";
                            if (cbx_Chupete.Checked == true) { if (usa != "") { usa += ", "; } usa += cbx_Chupete.Text.ToString().ToUpper(); }
                            if (cbx_Mamadera.Checked == true) { if (usa != "") { usa += ", "; } usa += cbx_Mamadera.Text.ToString().ToUpper(); }
                            if (cbx_Tuto.Checked == true) { if (usa != "") { usa += ", "; } usa += cbx_Tuto.Text.ToString().ToUpper(); }
                            if (cbx_PañalNoche.Checked == true) { if (usa != "") { usa += ", "; } usa += cbx_PañalNoche.Text.ToString().ToUpper(); }
                            if (cbx_Otro.Checked == true) { if (usa != "") { usa += ", "; } usa += tbx_UsaOtro.Text.ToString().ToUpper(); }
                            usa += ".";
                            P.objetos_uso = usa;
                        }

                        P.preferencia_alimento = tbx_PreferenciaAlimento.Text;
                        P.rut_niño = int.Parse(tbx_Rut.Text.ToString());
                        P.situacion_familiar = tbx_SituacionFamiliar.Text;
                        P.vasos_leche_dia = int.Parse(nud_VasosLeche.Value.ToString());
                        P.rut_padre = int.Parse(tbx_RutPadre.Text.ToString());
                        P.rut_madre = int.Parse(tbx_RutMadre.Text.ToString());
                        P.indicaciones_especiales = tbx_IndicacionesEspeciales.Text;
                        P.medicamentos_prohibidos = tbx_MedicamentosProhibidos.Text;
                        P.est_general = tbx_EstadoGeneral.Text;
                        P.est_nutricional = tbx_EstadoNutricional.Text;
                        P.rut_apoderado = int.Parse(tbx_RutApoderado.Text.ToString());
                        P.cod_nivel = int.Parse(cbx_NivelNiño.SelectedValue.ToString());
                        P.fono = int.Parse(tbx_CelularApoderado.Text.ToString());
                        int codfichasalud = g.GenCodFichaSalud();                       //<<= CODIGO NUEVA FICHA DE SALUD!! 
                        P.cod_fichasalud = codfichasalud;
                        string depo = "";
                        if (cbx_Mañana.Checked == true) { if (depo != "") { depo += ", "; } depo += cbx_Mañana.Text.ToString().ToUpper(); }
                        if (cbx_Tarde.Checked == true) { if (depo != "") { depo += ", "; } depo += cbx_Tarde.Text.ToString().ToUpper(); }
                        if (cbx_Noche.Checked == true) { if (depo != "") { depo += ", "; } depo += cbx_Noche.Text.ToString().ToUpper(); }
                        P.deposiciones = depo;
                        BEDE.Parvulo.AddObject(P);
                        //////////////////////////////////////////////////////////////////////////// SE CREA APODERADO, SI NO EXISTIA ///////////
                        if (apoderadoyaexiste == 0)
                        {
                            Apoderado A = new Apoderado();
                            A.rut_apoderado = int.Parse(tbx_RutApoderado.Text);
                            A.nombre = tbx_NombreApoderado.Text.Replace(" ", "·") + " " + tbx_ApellidoPApoderado.Text.Replace(" ", "·") + " " + tbx_ApellidoMPadre.Text.Replace(" ", "·");
                            if (tbx_TelefonoApoderado.Text != "")
                            {
                                A.fono = int.Parse(tbx_TelefonoApoderado.Text);
                            }
                            A.celular = int.Parse(tbx_CelularApoderado.Text);
                            A.email = tbx_MailApoderado.Text.ToString();
                            A.lugar_trabajo = tbx_LugarTrabajoApoderado.Text.ToString();
                            BEDE.Apoderado.AddObject(A);
                        }
                        /////////////////////////////////////////////////////////////////////////// SE CREA APODERADO, SI NO EXISTIA ///////////
                        Emergencia E = new Emergencia();
                        E.id_emergencia = g.GenIDEmergecia();
                        E.nombre = tbx_NombreEmergencia.Text.Replace(" ", "·") + " " + tbx_ApellidoPEmergencia.Text.Replace(" ", "·") + " " + tbx_ApellidoMEmergencia.Text.Replace(" ", "·");
                        E.celular = int.Parse(tbx_CelularEmergencia.Text);
                        E.email = tbx_MailEmergencia.Text.ToString();
                        E.id_parvulo = codfichaparvulo;
                        BEDE.Emergencia.AddObject(E);
                        ///////////////////////////////////////////////////////////////////////////////////// RESPONSABLE PAGO //////////////////
                        Responsable_Pago RP = new Responsable_Pago();
                        RP.id_responsable = g.GenIDPagador();
                        RP.nombre = tbx_Nombrepago.Text.Replace(" ", "·") + " " + tbx_ApellidoPPagos.Text.Replace(" ", "·") + " " + tbx_ApellidoMPagos.Text.Replace(" ", "·");
                        RP.email = tbx_MailPagos.Text;
                        RP.forma_pago = tbx_FormaPago.Text;
                        RP.niño = codfichaparvulo;
                        BEDE.Responsable_Pago.AddObject(RP);
                        ///////////////////////////////////////////////////////////////////////////////////// FICHA DE SALUD ////////////////////
                        Ficha_Salud FS = new Ficha_Salud();
                        FS.cod_ficha = codfichasalud;
                        if (rad_VisitaEspecialistaNo.Checked == true)
                        {
                            FS.atencion_especialista = "NO, NUNCA.";
                        }
                        else
                        {
                            FS.atencion_especialista = "SI, " + tbx_VisitaEspecialistas.Text;
                        }
                        FS.est_audicion = tbx_Auditiva.Text;
                        FS.est_dental = tbx_Dental.Text;
                        FS.situacion_embarazo = tbx_SituacionEmbarazo.Text;
                        FS.est_plantar = tbx_Plantar.Text;
                        FS.est_respiracion = tbx_Respiracion.Text;
                        FS.indicaciones_especiales_salud = tbx_IndicacionesEspecialesSalud.Text;
                        FS.est_vision = tbx_Visual.Text;
                        FS.enfermedades = tbx_EnfermedadesSufridas.Text;
                        FS.otros = tbx_EstadosOtros.Text;
                        FS.peso_talla = tbx_PesoTalla.Text;
                        FS.est_piel = tbx_Piel.Text;
                        if (rad_OperadoNo.Checked == true)
                        {
                            FS.operaciones = "NO, NUNCA.";
                        }
                        else
                        {
                            FS.operaciones = "SI, " + tbx_HaSidoOperado.Text;
                        }
                        FS.id_parvulo = codfichaparvulo;
                        BEDE.Ficha_Salud.AddObject(FS);
                        /////////////////////////////////////////////////////////////////////////////////// DATOS DE LA FAMILIA /////////////////
                        //PADRE
                        if (padreyaexiste == 0)
                        {
                            Padre PA = new Padre();
                            PA.rut_padre = int.Parse(tbx_RutPadre.Text);
                            PA.nombre = tbx_NombrePadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPPadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMPadre.Text.Replace(" ", "·").ToString();
                            if (tbx_FonoPadre.Text != "") { PA.fono = int.Parse(tbx_FonoPadre.Text); }
                            PA.celular = int.Parse(tbx_CeluPadre.Text);
                            PA.email = tbx_MailPadre.Text.ToString();
                            PA.lugar_trabajo = tbx_TrabajoPadre.Text.ToString();
                            BEDE.Padre.AddObject(PA);
                        }
                        //MADRE
                        if (madreyaexiste == 0)
                        {
                            Madre MA = new Madre();
                            MA.rut_madre = int.Parse(tbx_RutMadre.Text);
                            MA.nombre = tbx_NombreMadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPMadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMMadre.Text.Replace(" ", "·").ToString();
                            if (tbx_FonoMadre.Text != "") { MA.fono = int.Parse(tbx_FonoMadre.Text); }
                            MA.celular = int.Parse(tbx_CeluMadre.Text);
                            MA.email = tbx_MailMadre.Text;
                            MA.lugar_trabajo = tbx_TrabajoMadre.Text;
                            BEDE.Madre.AddObject(MA);
                        }
                        //CONVIVIENTES
                        int ccc = g.GenCodConviviente();
                        foreach (string aux in lbx_Convivientes.Items)
                        {
                            Conviviente C = new Conviviente();
                            C.cod_conviviente = ccc;
                            ccc++;
                            string[] datos = aux.Split('-');
                            C.nombre = datos[0].ToString().Trim();
                            C.parentesco = datos[1].ToString().Trim();
                            C.edad = int.Parse(datos[2].ToString().Trim());
                            C.actividad = datos[3].ToString().Trim();
                            C.id_parvulo = codfichaparvulo;
                            BEDE.Conviviente.AddObject(C);
                        }
                        if (cbx_ApoderadoRetira.Checked == true)
                        {
                            int seguir = v.ComprobarRetirante(tbx_RutApoderado.Text);
                            if (seguir == 0)
                            {
                                Autorizado_Retiro AR = new Autorizado_Retiro();
                                AR.nombre = tbx_NombreApoderado.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPApoderado.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMApoderado.Text.Replace(" ", "·").ToString();
                                AR.rut = int.Parse(tbx_RutApoderado.Text);
                                AR.fono = int.Parse(tbx_CelularApoderado.Text);
                                AR.relacion = "APODERADO";
                                AR.nombreacompañante = " ";
                                AR.tipo_licencia = " ";
                                AR.transporte_escolar = " ";
                                tieneretiro++;
                                BEDE.Autorizado_Retiro.AddObject(AR);
                            }
                            Retiro R = new Retiro();
                            R.id_retiro = g.GenIDRetiro(codfichaparvulo, int.Parse(tbx_RutApoderado.Text));
                            R.rut_autorizado = int.Parse(tbx_RutApoderado.Text);
                            R.cod_fichaniño = codfichaparvulo;
                            R.año = DateTime.Now.Year;
                            BEDE.Retiro.AddObject(R);

                        }
                        if (cbx_PadreRetira.Checked == true)
                        {
                            int seguir = v.ComprobarRetirante(tbx_RutPadre.Text);
                            if (seguir == 0)
                            {
                                Autorizado_Retiro AR = new Autorizado_Retiro();
                                AR.nombre = tbx_NombrePadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPPadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMPadre.Text.Replace(" ", "·").ToString();
                                AR.rut = int.Parse(tbx_RutPadre.Text);
                                AR.fono = int.Parse(tbx_CeluPadre.Text);
                                AR.relacion = "PADRE";
                                AR.nombreacompañante = " ";
                                AR.tipo_licencia = " ";
                                AR.transporte_escolar = " ";
                                tieneretiro++;
                                BEDE.Autorizado_Retiro.AddObject(AR);
                            }
                            Retiro R = new Retiro();
                            R.id_retiro = g.GenIDRetiro(codfichaparvulo, int.Parse(tbx_RutPadre.Text));
                            R.rut_autorizado = int.Parse(tbx_RutPadre.Text);
                            R.cod_fichaniño = codfichaparvulo;
                            R.año = DateTime.Now.Year;
                            BEDE.Retiro.AddObject(R);
                        }
                        if (cbx_MadreRetira.Checked == true)
                        {
                            int seguir = v.ComprobarRetirante(tbx_RutMadre.Text);
                            if (seguir == 0)
                            {
                                Autorizado_Retiro AR = new Autorizado_Retiro();
                                AR.nombre = tbx_NombreMadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoPMadre.Text.Replace(" ", "·").ToString() + " " + tbx_ApellidoMMadre.Text.Replace(" ", "·").ToString();
                                AR.rut = int.Parse(tbx_RutMadre.Text);
                                AR.fono = int.Parse(tbx_CeluMadre.Text);
                                AR.relacion = "MADRE";
                                AR.nombreacompañante = " ";
                                AR.tipo_licencia = " ";
                                AR.transporte_escolar = " ";
                                tieneretiro++;
                                BEDE.Autorizado_Retiro.AddObject(AR);
                            }
                            Retiro R = new Retiro();
                            R.id_retiro = g.GenIDRetiro(codfichaparvulo, int.Parse(tbx_RutMadre.Text));
                            R.rut_autorizado = int.Parse(tbx_RutMadre.Text);
                            R.cod_fichaniño = codfichaparvulo;
                            R.año = DateTime.Now.Year;
                            BEDE.Retiro.AddObject(R);
                        }

                        BEDE.SaveChanges();
                        MessageBox.Show("La ficha del nuevo parvulo se creó y almacenó correctamente.", "REGISTRO ALMACENADO.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        if (tieneretiro == 0)
                        {
                            MessageBox.Show("EL REGISTRO DE PERSONAS AUTORIZADAS A RETIRAR AL PARVULO SE ENCUENTRA PENDIENTE.\nPOR FAVOR PROCESA A REGISTRAR AL MENOS UNA PERSONA AUTORIZADA.\n(Para registrar autorizados a retiro, debe acceder al menu << Apoderados -> Registrar Autorizados a Retiro >>)", "REGISTRE AUTORIZADOS A RETIRO.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                        LimpiarFormulario();
                    }
                //}
                //catch { MessageBox.Show("Ha ocurrido un error al intentar almacenar los datos en\nla base de datos. por favor intentelo una vez mas.", "ERROR AL GUARDAR REGISTROS.", MessageBoxButtons.OK, MessageBoxIcon.Stop); }
            }
        }

        private void RegistrarParvulos_Load(object sender, EventArgs e)
        {
            boton_eliminar();
            this.Location = new Point(0, 0);
            cbx_NivelNiño.DataSource = BEDE.Nivel.Where(a => a.año == DateTime.Now.Year).OrderBy(a => a.cod_nivel);
            cbx_NivelNiño.DisplayMember = "nombre";
            cbx_NivelNiño.ValueMember = "cod_nivel";
            cbx_NivelNiño.SelectedIndex = -1;
            btn_BorrarPersona.Enabled = false;
        }

        private void tbx_NombreNiño_Leave(object sender, EventArgs e)
        {
            tbx_NombreNiño.Text = tbx_NombreNiño.Text.Trim();
            valnombreniño = v.ValidarTextos(tbx_NombreNiño.Text);
            if (valnombreniño == 0) { errorProvider1.SetError(lbl_Nombre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_Nombre, ""); }
        }

        private void tbx_ApellidoPaterno_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPaterno.Text = tbx_ApellidoPaterno.Text.Trim();
            valapellidopaterno = v.ValidarTextos(tbx_ApellidoPaterno.Text);
            if (valapellidopaterno == 0) { errorProvider1.SetError(lbl_ApellidoPaterno, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPaterno, ""); }
        }

        private void tbx_ApellidoMaterno_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMaterno.Text = tbx_ApellidoMaterno.Text.Trim();
            valapellidomaterno = v.ValidarTextos(tbx_ApellidoMaterno.Text);
            if (valapellidomaterno == 0) { errorProvider1.SetError(lbl_ApellidoMaterno, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMaterno, ""); }
        }

        private void dtp_Nacimiento_Leave(object sender, EventArgs e)
        {
            if (DateTime.Now.Date.Year > dtp_Nacimiento.Value.Date.Year)
            {
                valfechanacimiento = 1;
            }
            else
            {
                if (DateTime.Now.Date.Year < dtp_Nacimiento.Value.Date.Year) { valfechanacimiento = 0; }
                else
                {
                    if (DateTime.Now.Date.Month >= dtp_Nacimiento.Value.Date.Month + 2) { valfechanacimiento = 1; }
                    else { valfechanacimiento = 0; }
                }
            }
            if (valfechanacimiento == 0) { errorProvider1.SetError(lbl_FechaNacimiento, "La fecha indicada es invalida. por favor revise el valor.\n(La fecha no puede ser la actual.\nEl niño debe tener al menos 2 meses de vida."); }
            else { errorProvider1.SetError(lbl_FechaNacimiento, ""); }

        }

        private void tbx_DigitoVerificador_Leave(object sender, EventArgs e)
        {
            valrut = v.ValidarRut(tbx_Rut.Text, tbx_DigitoVerificador.Text);
            if (valrut == 0) { errorProvider1.SetError(lbl_RutNiño, "El RUT ingresado es invalido."); }
            else { errorProvider1.SetError(lbl_RutNiño, ""); }
        }

        private void cbx_NivelNiño_Leave(object sender, EventArgs e)
        {
            valnivel = v.ValidarCombobox(cbx_NivelNiño.Text.ToString());
            if (valnivel == 0) { errorProvider1.SetError(lbl_Nivel, "No seleccionó un nivel para el niño."); }
            else { errorProvider1.SetError(lbl_Nivel, ""); }
        }

        private void dtp_Ingreso_Leave(object sender, EventArgs e)
        {
            if (dtp_Ingreso.Value.Date < DateTime.Now.Date | dtp_Ingreso.Value.Date.Year != DateTime.Now.Date.Year) { valfechaingreso = 0; }
            else { valfechaingreso = 1; }
            if (valfechaingreso == 0) { errorProvider1.SetError(lbl_FechaIngreso, "La fecha de ingreso indicada es incorrecta:\n * La fecha de ingreso no puede estar previa a la fecha actual.\n * El año de ingreso debe ser el actual."); }
            else { errorProvider1.SetError(lbl_FechaIngreso, ""); }
        }

        private void tbx_DireccionComuna_Leave(object sender, EventArgs e)
        {
            tbx_DireccionComuna.Text = tbx_DireccionComuna.Text.Trim();
            valdireccioncomuna = v.ValidarTextos(tbx_DireccionComuna.Text);
            if (valdireccioncomuna == 0) { errorProvider1.SetError(lbl_Comuna, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_Comuna, ""); }
        }

        private void tbx_DireccionCalle_Leave(object sender, EventArgs e)
        {
            tbx_DireccionCalle.Text = tbx_DireccionCalle.Text.Trim();
            valdireccioncalle = v.ValidarTextos(tbx_DireccionCalle.Text);
            if (valdireccioncalle == 0) { errorProvider1.SetError(lbl_Domicilio, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_Domicilio, ""); }
        }

        private void tbx_DireccionNro_Leave(object sender, EventArgs e)
        {
            tbx_DireccionNro.Text = tbx_DireccionNro.Text.Trim();
            valdireccionnumero = v.ValidarNumeros(tbx_DireccionNro.Text);
            if (valdireccionnumero == 0) { errorProvider1.SetError(lbl_Numero, "Este campo solo puede contener valores numericos enteros.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_Numero, ""); }
        }

        private void tbx_AlergiaAlimento_Leave(object sender, EventArgs e)
        {
            tbx_AlergiaAlimento.Text = tbx_AlergiaAlimento.Text.Trim();
            if (tbx_AlergiaAlimento.Text == "") { tbx_AlergiaAlimento.Text = "NO ES ALERGICO A NINGUN ALIMENTO."; }
            valalergiaalimento = v.ValidarDescripciones(tbx_AlergiaAlimento.Text);
            if (valalergiaalimento == 0) { errorProvider1.SetError(lbl_AlergicoA, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
            else { errorProvider1.SetError(lbl_AlergicoA, ""); }
        }

        private void tbx_PreferenciaAlimento_Leave(object sender, EventArgs e)
        {
            tbx_PreferenciaAlimento.Text = tbx_PreferenciaAlimento.Text.Trim();
            if (tbx_PreferenciaAlimento.Text == "") { tbx_PreferenciaAlimento.Text = "NO TIENE ALIMENTOS DE PREFERENCIA O RECHASO."; }
            valpreferenciaalimento = v.ValidarDescripciones(tbx_PreferenciaAlimento.Text);
            if (valpreferenciaalimento == 0) { errorProvider1.SetError(lbl_AlimentoPreferido, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
            else { errorProvider1.SetError(lbl_AlimentoPreferido, ""); }
        }

        private void nud_VasosLeche_Enter(object sender, EventArgs e)
        {
            if (rad_Papilla.Checked == true | rad_Picados.Checked == true | rad_Comida.Checked == true) { valcomidaniño = 1; }
            else { valcomidaniño = 0; }
            if (valcomidaniño == 0) { errorProvider1.SetError(lbl_ElNiñoCome, "Debe seleccionar alguna de las opciones."); }
            else { errorProvider1.SetError(lbl_ElNiñoCome, ""); }
        }

        private void tbx_NombreApoderado_Leave(object sender, EventArgs e)
        {
            tbx_NombreApoderado.Text = tbx_NombreApoderado.Text.Trim();
            valnombreapoderado = v.ValidarTextos(tbx_NombreApoderado.Text);
            if (valnombreapoderado == 0) { errorProvider1.SetError(lbl_NombreApoderado, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombreApoderado, ""); }
        }

        private void rad_Papilla_CheckedChanged(object sender, EventArgs e)
        {
            errorProvider1.SetError(lbl_ElNiñoCome, "");
        }

        private void rad_Picados_CheckedChanged(object sender, EventArgs e)
        {
            errorProvider1.SetError(lbl_ElNiñoCome, "");
        }

        private void rad_Comida_CheckedChanged(object sender, EventArgs e)
        {
            errorProvider1.SetError(lbl_ElNiñoCome, "");
        }

        private void tbx_ApellidoPApoderado_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPApoderado.Text = tbx_ApellidoPApoderado.Text.Trim();
            valapellidopapoderado = v.ValidarTextos(tbx_ApellidoPApoderado.Text);
            if (valapellidopapoderado == 0) { errorProvider1.SetError(lbl_ApellidoPApoderado, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPApoderado, ""); }
        }

        private void tbx_ApellidoMApoderado_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMApoderado.Text = tbx_ApellidoMApoderado.Text.Trim();
            valapellidomapoderado = v.ValidarTextos(tbx_ApellidoMApoderado.Text);
            if (valapellidomapoderado == 0) { errorProvider1.SetError(lbl_ApellidoMApoderado, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMApoderado, ""); }
        }

        private void tbx_DigitoVerificadorApoderado_Leave(object sender, EventArgs e)
        {
            valrutapoderado = v.ValidarRut(tbx_RutApoderado.Text, tbx_DigitoVerificadorApoderado.Text);
            if (valrutapoderado == 0) { errorProvider1.SetError(lbl_RutApoderado, "El RUT ingresado es invalido."); }
            else { errorProvider1.SetError(lbl_RutApoderado, ""); }
        }

        private void tbx_TelefonoApoderado_Leave(object sender, EventArgs e)
        {
            tbx_TelefonoApoderado.Text = tbx_TelefonoApoderado.Text.Trim();
            if (tbx_TelefonoApoderado.Text != "")
            {
                valfonoapoderado = v.ValidarFono(tbx_TelefonoApoderado.Text);
                if (valfonoapoderado == 0) { errorProvider1.SetError(lbl_FonoApoderado, "El número de telefono ingresado no tiene el formato correcto.\n(un nro. de teléfono se compone de un prefijo 02, y 7 digutos enteros)."); }
                else { errorProvider1.SetError(lbl_FonoApoderado, ""); }
            }
            else { valfonoapoderado = 1; errorProvider1.SetError(lbl_FonoApoderado, ""); }
        }

        private void tbx_CelularApoderado_Leave(object sender, EventArgs e)
        {
            tbx_CelularApoderado.Text = tbx_CelularApoderado.Text.Trim();
            valcelularapoderado = v.ValidarFono(tbx_CelularApoderado.Text);
            if (valcelularapoderado == 0) { errorProvider1.SetError(lbl_CelularApoderado, "El número de celular ingresado no tiene el formato correcto.\n(un nro. de celular se compone de un prefijo 06, 07, 08 o 09, y 7 digutos enteros)."); }
            else { errorProvider1.SetError(lbl_CelularApoderado, ""); }
        }

        private void tbx_LugarTrabajoApoderado_Leave(object sender, EventArgs e)
        {
            tbx_LugarTrabajoApoderado.Text = tbx_LugarTrabajoApoderado.Text.Trim();
            vallugartrabajoapoderado = v.ValidarDescripciones(tbx_LugarTrabajoApoderado.Text);
            if (vallugartrabajoapoderado == 0) { errorProvider1.SetError(lbl_TrabajoApoderado, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_TrabajoApoderado, ""); }
        }

        private void tbx_MailApoderado_Leave(object sender, EventArgs e)
        {
            tbx_MailApoderado.Text = tbx_MailApoderado.Text.Trim();
            valmailapoderado = v.ValidarMail(tbx_MailApoderado.Text);
            if (valmailapoderado == 0) { errorProvider1.SetError(lbl_MailApoderado, "El correo electrónico ingresado es incorrecto.\n(no tiene la estructura estándar de un correo electrónico).\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_MailApoderado, ""); }
        }

        private void tbx_NombreEmergencia_Leave(object sender, EventArgs e)
        {
            tbx_NombreEmergencia.Text = tbx_NombreEmergencia.Text.Trim();
            valnombreemergencia = v.ValidarTextos(tbx_NombreEmergencia.Text);
            if (valnombreemergencia == 0) { errorProvider1.SetError(lbl_NombreEmergencia, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombreEmergencia, ""); }
        }

        private void tbx_ApellidoPEmergencia_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPEmergencia.Text = tbx_ApellidoPEmergencia.Text.Trim();
            valapellidopemergencia = v.ValidarTextos(tbx_ApellidoPEmergencia.Text);
            if (valapellidopemergencia == 0) { errorProvider1.SetError(lbl_ApellidoPEmergencia, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPEmergencia, ""); }
        }

        private void tbx_ApellidoMEmergencia_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMEmergencia.Text = tbx_ApellidoMEmergencia.Text.Trim();
            valapellidomemergencia = v.ValidarTextos(tbx_ApellidoMEmergencia.Text);
            if (valapellidomemergencia == 0) { errorProvider1.SetError(lbl_ApellidoMEmergencia, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMEmergencia, ""); }
        }

        private void tbx_CelularEmergencia_Leave(object sender, EventArgs e)
        {
            valcelularemergencia = v.ValidarFono(tbx_CelularEmergencia.Text);
            if (valcelularemergencia == 0) { errorProvider1.SetError(lbl_CeluEmergencia, "El número de celular ingresado no tiene el formato correcto.\n(un nro. de celular se compone de un prefijo 06, 07, 08 o 09, y 7 digutos enteros)."); }
            else { errorProvider1.SetError(lbl_CeluEmergencia, ""); }
        }

        private void tbx_MailEmergencia_Leave(object sender, EventArgs e)
        {
            tbx_MailEmergencia.Text = tbx_MailEmergencia.Text.Trim();
            valmailemergencia = v.ValidarMail(tbx_MailEmergencia.Text);
            if (valmailemergencia == 0) { errorProvider1.SetError(lbl_MailEmergencia, "El correo electrónico ingresado es incorrecto.\n(no tiene la estructura estándar de un correo electrónico).\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_MailEmergencia, ""); }
        }

        private void tbx_SituacionEmbarazo_Leave(object sender, EventArgs e)
        {
            tbx_SituacionEmbarazo.Text = tbx_SituacionEmbarazo.Text.Trim();
            if (tbx_SituacionEmbarazo.Text == "") { tbx_SituacionEmbarazo.Text = "NINGUNA ."; }
            tbx_SituacionEmbarazo.Text = tbx_SituacionEmbarazo.Text.Trim();
            valsituacionembarazo = v.ValidarDescripciones(tbx_SituacionEmbarazo.Text);
            if (valsituacionembarazo == 0) { errorProvider1.SetError(lbl_SituacionEmbarazo, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_SituacionEmbarazo, ""); }
        }

        private void tbx_IndicacionesEspecialesSalud_Leave(object sender, EventArgs e)
        {
            if (tbx_IndicacionesEspecialesSalud.Text == "") { tbx_IndicacionesEspecialesSalud.Text = "NINGUNA ."; }
            tbx_IndicacionesEspecialesSalud.Text = tbx_IndicacionesEspecialesSalud.Text.Trim();
            valindicacionesespecialessalud = v.ValidarDescripciones(tbx_IndicacionesEspecialesSalud.Text);
            if (valindicacionesespecialessalud == 0) { errorProvider1.SetError(lbl_IndicacionesEspecialesSalud, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_IndicacionesEspecialesSalud, ""); }
        }

        private void tbx_EnfermedadesSufridas_Leave(object sender, EventArgs e)
        {
            if (tbx_EnfermedadesSufridas.Text == "") { tbx_EnfermedadesSufridas.Text = "NINGUNA ."; }
            tbx_EnfermedadesSufridas.Text = tbx_EnfermedadesSufridas.Text.Trim();
            valenfermedadessufridas = v.ValidarDescripciones(tbx_EnfermedadesSufridas.Text);
            if (valenfermedadessufridas == 0) { errorProvider1.SetError(lbl_EnfermedadesSufridas, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_EnfermedadesSufridas, ""); }
        }

        private void rad_OperadoNo_CheckedChanged(object sender, EventArgs e)
        {
            tbx_HaSidoOperado.ReadOnly = true;
            tbx_HaSidoOperado.Enabled = false;
            tbx_HaSidoOperado.Text = "NO, NUNCA.";
            errorProvider1.SetError(lbl_HaSidoOperado, "");
            valhasidooperado = 1;
        }

        private void rad_OperadoSi_CheckedChanged(object sender, EventArgs e)
        {
            tbx_HaSidoOperado.ReadOnly = false;
            tbx_HaSidoOperado.Enabled = true;
            tbx_HaSidoOperado.Text = "¿DE QUÉ?";
        }

        private void tbx_HaSidoOperado_Leave(object sender, EventArgs e)
        {
            if (rad_OperadoNo.Checked == false && rad_OperadoSi.Checked == false)
            {
                valhasidooperado = 0;
                errorProvider1.SetError(lbl_HaSidoOperado, "Debe escoger una respuesta a esta pregunta.");
            }
            else
            {
                tbx_HaSidoOperado.Text = tbx_HaSidoOperado.Text.Trim();
                valhasidooperado = v.ValidarDescripciones(tbx_HaSidoOperado.Text);
                if (valhasidooperado == 0) { errorProvider1.SetError(lbl_HaSidoOperado, "Si Seleccionó SI, no puede dejar este campo en blanco.\nEs necesario dar información."); }
                else { errorProvider1.SetError(lbl_HaSidoOperado, ""); }
            }
        }

        private void tbx_EstadoNutricional_Leave(object sender, EventArgs e)
        {
            tbx_EstadoNutricional.Text = tbx_EstadoNutricional.Text.Trim();
            valestadonutricional = v.ValidarDescripciones(tbx_EstadoNutricional.Text);
            if (valestadonutricional == 0) { errorProvider1.SetError(lbl_EstadoNutricional, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_EstadoNutricional, ""); }
        }

        private void tbx_EstadoGeneral_Leave(object sender, EventArgs e)
        {
            tbx_EstadoGeneral.Text = tbx_EstadoGeneral.Text.Trim();
            valestadogeneral = v.ValidarDescripciones(tbx_EstadoGeneral.Text);
            if (valestadogeneral == 0) { errorProvider1.SetError(lbl_EstadoGeneral, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_EstadoGeneral, ""); }
        }

        private void tbx_MedicamentosProhibidos_Leave(object sender, EventArgs e)
        {
            tbx_MedicamentosProhibidos.Text.Trim();
            if (tbx_MedicamentosProhibidos.Text != "")
            {
                tbx_MedicamentosProhibidos.Text = tbx_MedicamentosProhibidos.Text.Trim();
                valmedicamentosprohibidos = v.ValidarDescripciones(tbx_MedicamentosProhibidos.Text);
                if (valmedicamentosprohibidos == 0) { errorProvider1.SetError(lbl_MedicamentosProhibidos, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
                else { errorProvider1.SetError(lbl_MedicamentosProhibidos, ""); }
            }
            else { tbx_MedicamentosProhibidos.Text = "NO TIENE PROHIBICIONES."; valmedicamentosprohibidos = 1; }
        }

        private void cbx_DepMañana_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == true | cbx_Tarde.Checked == true | cbx_Noche.Checked == true) { valdeposiciones = 1; }
            else { valdeposiciones = 0; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "Debe seleccionar una de las opciones."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void tbx_IndicacionesEspeciales_Leave(object sender, EventArgs e)
        {
            tbx_IndicacionesEspeciales.Text = tbx_IndicacionesEspeciales.Text.Trim();
            if (tbx_IndicacionesEspeciales.Text != "")
            {
                valindicacionesespeciales = v.ValidarDescripciones(tbx_IndicacionesEspeciales.Text);
                if (valindicacionesespeciales == 0) { errorProvider1.SetError(lbl_IndicacionesEspeciales, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco.\nEste campo no puede quedar vacío."); }
                else { errorProvider1.SetError(lbl_IndicacionesEspeciales, ""); }
            }
            else { tbx_IndicacionesEspeciales.Text = "NO HAY INDICACIONES ESPECIALES."; valindicacionesespeciales = 1; }
        }

        private void cbx_DepTarde_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == true | cbx_Tarde.Checked == true | cbx_Noche.Checked == true) { valdeposiciones = 1; }
            else { valdeposiciones = 0; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "Debe seleccionar una de las opciones."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void cbx_DepNoche_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == true | cbx_Tarde.Checked == true | cbx_Noche.Checked == true) { valdeposiciones = 1; }
            else { valdeposiciones = 0; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "Debe seleccionar una de las opciones."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void rad_OperadoSi_Leave(object sender, EventArgs e)
        {
            if (rad_OperadoNo.Checked == true) { tbx_HaSidoOperado.Text = "NO, NUNCA."; valhasidooperado = 1; }
        }

        private void rad_CompartePiezaNo_CheckedChanged(object sender, EventArgs e)
        {
            tbx_CompartePieza.ReadOnly = true;
            tbx_CompartePieza.Enabled = false;
            tbx_CompartePieza.Text = "NO, TIENE HABITACION PROPIA.";
            errorProvider1.SetError(lbl_CompartePieza, "");
        }

        private void rad_CompartePiezaSi_CheckedChanged(object sender, EventArgs e)
        {
            tbx_CompartePieza.ReadOnly = false;
            tbx_CompartePieza.Enabled = true;
            tbx_CompartePieza.Text = "¿CON QUIÉN?";
        }

        private void tbx_CompartePieza_Leave(object sender, EventArgs e)
        {
            if (rad_CompartePiezaSi.Checked == false && rad_CompartePiezaNo.Checked == false)
            {
                valcompartepieza = 0;
                errorProvider1.SetError(lbl_CompartePieza, "Debe escoger una respuesta a esta pregunta.");
            }
            else
            {
                tbx_CompartePieza.Text = tbx_CompartePieza.Text.Trim();
                valcompartepieza = v.ValidarDescripciones(tbx_CompartePieza.Text);
                if (valcompartepieza == 0) { errorProvider1.SetError(lbl_CompartePieza, "Si Seleccionó SI, no puede dejar este campo en blanco.\nEs necesario dar información."); }
                else { errorProvider1.SetError(lbl_CompartePieza, ""); }
            }
        }

        private void tbx_ComparteCama_Leave(object sender, EventArgs e)
        {
            if (rad_ComparteCamaNo.Checked == false && rad_ComparteCamaSi.Checked == false)
            {
                valcompartecama = 0;
                errorProvider1.SetError(lbl_ComparteCama, "Debe escoger una respuesta a la pregunta.");
            }
            else
            {
                tbx_ComparteCama.Text = tbx_ComparteCama.Text.Trim();
                valcompartecama = v.ValidarDescripciones(tbx_ComparteCama.Text);
                if (valcompartecama == 0) { errorProvider1.SetError(lbl_ComparteCama, "Si Seleccionó SI, no puede dejar este campo en blanco.\nEs necesario dar información."); }
                else { errorProvider1.SetError(lbl_ComparteCama, ""); }
            }
        }

        private void tbx_EstadosOtros_Leave(object sender, EventArgs e)
        {
            int a = v.ValidarDescripciones(tbx_Visual.Text);
            int b = v.ValidarDescripciones(tbx_Auditiva.Text);
            int c = v.ValidarDescripciones(tbx_Dental.Text);
            int d = v.ValidarDescripciones(tbx_Piel.Text);
            int ee = v.ValidarDescripciones(tbx_Plantar.Text);
            int f = v.ValidarDescripciones(tbx_Respiracion.Text);

            valdianostico = a * b * c * d * ee * f;
            if (tbx_EstadosOtros.Text != "")
            {
                int g = v.ValidarDescripciones(tbx_EstadosOtros.Text);
                valdianostico *= g;
            }
            if (valdianostico == 0) { errorProvider1.SetError(lbl_DiagnosticoEspecialista, "Ninguno de los parametros puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_DiagnosticoEspecialista, ""); }
        }

        private void tbx_VisitaEspecialistas_Leave(object sender, EventArgs e)
        {
            if (rad_VisitaEspecialistaNo.Checked == false && rad_VisitaEspecialistaSi.Checked == false)
            {
                valvisitaespecialista = 0;
                errorProvider1.SetError(lbl_VisitaEspecialista, "Debe seleccionar una respuesta para esta pregunta.");
            }
            else
            {
                tbx_VisitaEspecialistas.Text = tbx_VisitaEspecialistas.Text.Trim();
                valvisitaespecialista = v.ValidarDescripciones(tbx_VisitaEspecialistas.Text);
                if (valvisitaespecialista == 0) { errorProvider1.SetError(lbl_VisitaEspecialista, "Si seleccionó SI, debe ingresar información."); }
                else { errorProvider1.SetError(lbl_VisitaEspecialista, ""); }
            }
        }

        private void rad_VisitaEspecialistaNo_CheckedChanged(object sender, EventArgs e)
        {
            tbx_VisitaEspecialistas.ReadOnly = true;
            tbx_VisitaEspecialistas.Enabled = false;
            tbx_VisitaEspecialistas.Text = "NO, NO HA VISITADO NINGUN ESPECIALISTA.";
            valvisitaespecialista = 1;
            errorProvider1.SetError(lbl_VisitaEspecialista, "");
        }

        private void rad_VisitaEspecialistaSi_CheckedChanged(object sender, EventArgs e)
        {
            tbx_VisitaEspecialistas.ReadOnly = false;
            tbx_VisitaEspecialistas.Enabled = true;
            tbx_VisitaEspecialistas.Text = "¿QUE ESPECIALISTAS HA VISITADO?";
        }

        private void rad_ComparteCamaNo_CheckedChanged(object sender, EventArgs e)
        {
            tbx_ComparteCama.ReadOnly = true;
            tbx_ComparteCama.Enabled = false;
            tbx_ComparteCama.Text = "NO, TIENE SU PROPIA CAMA.";
            errorProvider1.SetError(lbl_ComparteCama, "");
        }

        private void rad_ComparteCamaSi_CheckedChanged(object sender, EventArgs e)
        {
            tbx_ComparteCama.ReadOnly = false;
            tbx_ComparteCama.Enabled = true;
            tbx_ComparteCama.Text = "¿CON QUIÉN?";
        }

        private void tbx_NombrePadre_Leave(object sender, EventArgs e)
        {
            tbx_NombrePadre.Text = tbx_NombrePadre.Text.Trim();
            valnombrepadre = v.ValidarTextos(tbx_NombrePadre.Text);
            if (valnombrepadre == 0) { errorProvider1.SetError(lbl_NombrePadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombrePadre, ""); }
        }

        private void tbx_ApellidoPPadre_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPPadre.Text = tbx_ApellidoPPadre.Text.Trim();
            valapellidoppadre = v.ValidarTextos(tbx_ApellidoPPadre.Text);
            if (valapellidoppadre == 0) { errorProvider1.SetError(lbl_ApellidoPPadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPPadre, ""); }
        }

        private void tbx_ApellidoMPadre_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMPadre.Text = tbx_ApellidoMPadre.Text.Trim();
            valapellidompadre = v.ValidarTextos(tbx_ApellidoMPadre.Text);
            if (valapellidompadre == 0) { errorProvider1.SetError(lbl_ApellidoMPadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMPadre, ""); }
        }

        private void tbx_DigitoPadre_Leave(object sender, EventArgs e)
        {
            valrutpadre = v.ValidarRut(tbx_RutPadre.Text, tbx_DigitoPadre.Text);
            if (valrutpadre == 0) { errorProvider1.SetError(lbl_RutPadre, "El Rut ingresado es incorrecto."); }
            else { errorProvider1.SetError(lbl_RutPadre, ""); }
        }

        private void tbx_FonoPadre_Leave(object sender, EventArgs e)
        {
            tbx_FonoPadre.Text = tbx_FonoPadre.Text.Trim();
            if (tbx_FonoPadre.Text != "")
            {
                valfonopadre = v.ValidarFono(tbx_FonoPadre.Text);
                if (valfonopadre == 0) { errorProvider1.SetError(lbl_FonoPadre, "El número Telefónico ingresado es incorrecto:\n * Un número telefónico esta formado por un prefijo (02) y 7 digitos.\n * Este Campo no puede quedar vacío."); }
                else { errorProvider1.SetError(lbl_FonoPadre, ""); }
            }
            else { valfonopadre = 1; errorProvider1.SetError(lbl_FonoPadre, ""); }
        }

        private void tbx_CeluPadre_Leave(object sender, EventArgs e)
        {
            tbx_CeluPadre.Text = tbx_CeluPadre.Text.Trim();
            valcelupadre = v.ValidarFono(tbx_CeluPadre.Text);
            if (valcelupadre == 0) { errorProvider1.SetError(lbl_CeluPadre, "El número de celular ingresado es incorrecto:\n * Un numero de celular está formado por un prefijo (09, 08, 07 o 06) y 6 digitos.\n * Este campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_CeluPadre, ""); }
        }

        private void tbx_TrabajoPadre_Leave(object sender, EventArgs e)
        {
            tbx_TrabajoPadre.Text = tbx_TrabajoPadre.Text.Trim();
            valtrabajopadre = v.ValidarDescripciones(tbx_TrabajoPadre.Text);
            if (valtrabajopadre == 0) { errorProvider1.SetError(lbl_TrabajoPadre, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
            else { errorProvider1.SetError(lbl_TrabajoPadre, ""); }
        }

        private void tbx_MailPadre_Leave(object sender, EventArgs e)
        {
            tbx_MailPadre.Text = tbx_MailPadre.Text.Trim();
            valmailpadre = v.ValidarMail(tbx_MailPadre.Text);
            if (valmailpadre == 0) { errorProvider1.SetError(lbl_MailPadre, "El correo electrónico ingresado no tiene el formato correcto.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_MailPadre, ""); }
        }

        private void tbx_TrabajoMadre_Leave(object sender, EventArgs e)
        {
            tbx_TrabajoMadre.Text = tbx_TrabajoMadre.Text.Trim();
            valtrabajomadre = v.ValidarDescripciones(tbx_TrabajoMadre.Text);
            if (valtrabajomadre == 0) { errorProvider1.SetError(lbl_TrabajoMadre, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
            else { errorProvider1.SetError(lbl_TrabajoMadre, ""); }
        }

        private void tbx_MailMadre_Leave(object sender, EventArgs e)
        {
            tbx_MailMadre.Text = tbx_MailMadre.Text.Trim();
            valmailmadre = v.ValidarMail(tbx_MailMadre.Text);
            if (valmailmadre == 0) { errorProvider1.SetError(lbl_MailMadre, "El correo electrónico ingresado no tiene el formato correcto.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_MailMadre, ""); }
        }

        private void tbx_NombreMadre_Leave(object sender, EventArgs e)
        {
            tbx_NombreMadre.Text = tbx_NombreMadre.Text.Trim();
            valnombremadre = v.ValidarTextos(tbx_NombreMadre.Text);
            if (valnombremadre == 0) { errorProvider1.SetError(lbl_NombreMadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombreMadre, ""); }
        }

        private void tbx_ApellidoPMadre_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPMadre.Text = tbx_ApellidoPMadre.Text.Trim();
            valapellidopmadre = v.ValidarTextos(tbx_ApellidoPMadre.Text);
            if (valapellidopmadre == 0) { errorProvider1.SetError(lbl_ApellidoPMadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPMadre, ""); }
        }

        private void tbx_ApellidoMMadre_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMMadre.Text = tbx_ApellidoMMadre.Text.Trim();
            valapellidommadre = v.ValidarTextos(tbx_ApellidoMMadre.Text);
            if (valapellidommadre == 0) { errorProvider1.SetError(lbl_ApellidoMMadre, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMMadre, ""); }
        }

        private void tbx_DigitoMadre_Leave(object sender, EventArgs e)
        {
            valrutmadre = v.ValidarRut(tbx_RutMadre.Text, tbx_DigitoMadre.Text);
            if (valrutmadre == 0) { errorProvider1.SetError(lbl_RutMadre, "El Rut ingresado es incorrecto."); }
            else { errorProvider1.SetError(lbl_RutMadre, ""); }
        }

        private void tbx_FonoMadre_Leave(object sender, EventArgs e)
        {
            tbx_FonoMadre.Text = tbx_FonoMadre.Text.Trim();
            if (tbx_FonoMadre.Text != "")
            {
                valfonomadre = v.ValidarFono(tbx_FonoMadre.Text);
                if (valfonomadre == 0) { errorProvider1.SetError(lbl_FonoMadre, "El número Telefónico ingresado es incorrecto:\n * Un número telefónico esta formado por un prefijo (02) y 7 digitos.\n * Este Campo no puede quedar vacío."); }
                else { errorProvider1.SetError(lbl_FonoMadre, ""); }
            }
            else { valfonomadre = 1; errorProvider1.SetError(lbl_FonoMadre, ""); }
        }

        private void tbx_CeluMadre_Leave(object sender, EventArgs e)
        {
            tbx_CeluMadre.Text = tbx_CeluMadre.Text.Trim();
            valcelumadre = v.ValidarFono(tbx_CeluMadre.Text);
            if (valcelumadre == 0) { errorProvider1.SetError(lbl_CeluMadre, "El número de celular ingresado es incorrecto:\n * Un numero de celular está formado por un prefijo (09, 08, 07 o 06) y 6 digitos.\n * Este campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_CeluMadre, ""); }
        }

        private void tbx_SituacionFamiliar_Leave(object sender, EventArgs e)
        {
            tbx_SituacionFamiliar.Text = tbx_SituacionFamiliar.Text.Trim();
            if (tbx_SituacionFamiliar.Text == "") { tbx_SituacionFamiliar.Text = "NINGUNA."; valsituacionfamiliar = 1; }
            else
            {
                valsituacionfamiliar = v.ValidarDescripciones(tbx_SituacionFamiliar.Text);
                if (valsituacionfamiliar == 0) { errorProvider1.SetError(lbl_SituacionFamiliar, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
                else { errorProvider1.SetError(lbl_SituacionFamiliar, ""); }
            }
        }

        private void lbx_Convivientes_Leave(object sender, EventArgs e)
        {
            if (lbx_Convivientes.Items.Count == 0) { valconvivientes = 0; } else { valconvivientes = 1; }
            if (valconvivientes == 0) { errorProvider1.SetError(lbl_ViveCon, "No se registraron convivientes del niño."); }
            else { errorProvider1.SetError(lbl_ViveCon, ""); }
        }

        private void tbx_NombreConviviente_Leave(object sender, EventArgs e)
        {
            tbx_NombreConviviente.Text = tbx_NombreConviviente.Text.Trim();
            valnombreconviviente = v.ValidarTextos(tbx_NombreConviviente.Text);
            if (valnombreconviviente == 0) { errorProvider1.SetError(lbl_NombreConviviente, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombreConviviente, ""); }
        }

        private void tbx_ApellidoPConviviente_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPConviviente.Text = tbx_ApellidoPConviviente.Text.Trim();
            valapellidopconviviente = v.ValidarTextos(tbx_ApellidoPConviviente.Text);
            if (valapellidopconviviente == 0) { errorProvider1.SetError(lbl_ApellidoPConviviente, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPConviviente, ""); }
        }

        private void tbx_ApellidoMConviviente_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMConviviente.Text = tbx_ApellidoMConviviente.Text.Trim();
            valapellidomconviviente = v.ValidarTextos(tbx_ApellidoMConviviente.Text);
            if (valapellidomconviviente == 0) { errorProvider1.SetError(lbl_ApellidoMConviviente, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMConviviente, ""); }
        }

        private void cbx_Parentesco_Leave(object sender, EventArgs e)
        {
            valparentesco = v.ValidarCombobox(cbx_Parentesco.Text);
            if (valparentesco == 0) { errorProvider1.SetError(lbl_Parentesco, "No ha seleccionado parentesco."); }
            else { errorProvider1.SetError(lbl_Parentesco, ""); }
        }

        private void tbx_Actividad_Leave(object sender, EventArgs e)
        {
            tbx_Actividad.Text = tbx_Actividad.Text.Trim();
            valocupacion = v.ValidarDescripciones(tbx_Actividad.Text);
            if (valocupacion == 0) { errorProvider1.SetError(lbl_Actividad, "Este campo solo puede contener LETRAS, ESPACIOS, COMAS (,) Y PUNTOS (.).\nPuede que el campo esté mal escrito :\n * El Campo no puede iniciar con una coma ni con un punto.\n * La descripción no puede tener mas comas que espacios en blanco."); }
            else { errorProvider1.SetError(lbl_Actividad, ""); }
        }

        private void btn_Añadir_Click(object sender, EventArgs e)
        {
            int a = 0;
            if (tbx_NombreConviviente.Enabled == false) { tbx_NombreConviviente.Enabled = true; a++; }
            tbx_NombreConviviente.Focus();
            if (a == 1) { tbx_NombreConviviente.Enabled = false; a = 0; }
            if (tbx_ApellidoPConviviente.Enabled == false) { tbx_ApellidoPConviviente.Enabled = true; a++; }
            tbx_ApellidoPConviviente.Focus();
            if (a == 1) { tbx_ApellidoPConviviente.Enabled = false; a = 0; }
            if (tbx_ApellidoMConviviente.Enabled == false) { tbx_ApellidoMConviviente.Enabled = true; a++; }
            tbx_ApellidoMConviviente.Focus();
            if (a == 1) { tbx_ApellidoMConviviente.Enabled = false; }
            cbx_Parentesco.Focus();
            nud_EdadConviviente.Focus();
            tbx_Actividad.Focus();
            btn_Añadir.Focus();

            int valido = valnombreconviviente * valapellidopconviviente * valapellidomconviviente * valparentesco * valocupacion;
            if (valido == 0)
            {
                MessageBox.Show("Se encontraron errores en los datos ingresado. Por favor\nrevise los campos y reintente guardar.", "ERROR EN LOS DATOS.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                string linea = tbx_NombreConviviente.Text.Replace(" ","·") + " " + tbx_ApellidoPConviviente.Text.Replace(" ","·") + " " + tbx_ApellidoMConviviente.Text.Replace(" ","·") + " - " + cbx_Parentesco.Text + " - " + nud_EdadConviviente.Value.ToString() + " - " + tbx_Actividad.Text;
                lbx_Convivientes.Items.Add(linea);
                boton_eliminar();
                tbx_NombreConviviente.Clear();
                tbx_ApellidoPConviviente.Clear();
                tbx_ApellidoMConviviente.Clear();
                cbx_Parentesco.SelectedIndex = -1;
                nud_EdadConviviente.Value = 0;
                tbx_Actividad.Clear();
                errorProvider1.SetError(lbl_ViveCon, "");
                btn_BorrarPersona.Enabled = true;
                tbx_NombreConviviente.Focus();
            }
        }

        private void btn_BorrarPersona_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Está seguro que desea eliminar la fila seleccionada?", "Eliminar Conviviente", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                lbx_Convivientes.Items.Remove(lbx_Convivientes.SelectedItem);
                boton_eliminar();
            }
        }

        private void cbx_Parentesco_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbx_Parentesco.Text == "PADRE")
            {
                tbx_NombreConviviente.Clear();
                tbx_NombreConviviente.Text = tbx_NombrePadre.Text;
                tbx_NombreConviviente.Enabled = false;
                tbx_ApellidoPConviviente.Clear();
                tbx_ApellidoPConviviente.Text = tbx_ApellidoPPadre.Text;
                tbx_ApellidoPConviviente.Enabled = false;
                tbx_ApellidoMConviviente.Clear();
                tbx_ApellidoMConviviente.Text = tbx_ApellidoMPadre.Text;
                tbx_ApellidoMConviviente.Enabled = false;
            }
            else
            {
                if (cbx_Parentesco.Text == "MADRE")
                {
                    tbx_NombreConviviente.Clear();
                    tbx_NombreConviviente.Text = tbx_NombreMadre.Text;
                    tbx_NombreConviviente.Enabled = false;
                    tbx_ApellidoPConviviente.Clear();
                    tbx_ApellidoPConviviente.Text = tbx_ApellidoPMadre.Text;
                    tbx_ApellidoPConviviente.Enabled = false;
                    tbx_ApellidoMConviviente.Clear();
                    tbx_ApellidoMConviviente.Text = tbx_ApellidoMMadre.Text;
                    tbx_ApellidoMConviviente.Enabled = false;
                }
                else
                {
                    tbx_NombreConviviente.Enabled = true;
                    tbx_NombreConviviente.Clear();
                    tbx_ApellidoPConviviente.Enabled = true;
                    tbx_ApellidoPConviviente.Clear();
                    tbx_ApellidoMPadre.Enabled = true;
                    tbx_ApellidoMConviviente.Clear();
                }
            }
        }

        private void tbx_Nombrepago_Leave(object sender, EventArgs e)
        {
            tbx_Nombrepago.Text = tbx_Nombrepago.Text.Trim();
            valnombrepagos = v.ValidarTextos(tbx_Nombrepago.Text);
            if (valnombrepagos == 0) { errorProvider1.SetError(lbl_NombrePago, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_NombrePago, ""); }
        }

        private void tbx_ApellidoPPagos_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoPPagos.Text = tbx_ApellidoPPagos.Text.Trim();
            valapellidoppagos = v.ValidarTextos(tbx_ApellidoPPagos.Text);
            if (valapellidoppagos == 0) { errorProvider1.SetError(lbl_ApellidoPpago, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoPpago, ""); }
        }

        private void tbx_ApellidoMPagos_Leave(object sender, EventArgs e)
        {
            tbx_ApellidoMPagos.Text = tbx_ApellidoMPagos.Text.Trim();
            valapellidompagos = v.ValidarTextos(tbx_ApellidoMPagos.Text);
            if (valapellidompagos == 0) { errorProvider1.SetError(lbl_ApellidoMPagos, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_ApellidoMPagos, ""); }
        }

        private void tbx_CeluPagos_Leave(object sender, EventArgs e)
        {
            tbx_FormaPago.Text = tbx_FormaPago.Text.Trim();
            valcelupagos = v.ValidarTextos(tbx_FormaPago.Text);
            if (valcelupagos == 0) { errorProvider1.SetError(lbl_FormaPago, "Este campo solo puede contener letras de la A a la Z y espacios.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_FormaPago, ""); }
        }

        private void tbx_MailPagos_Leave(object sender, EventArgs e)
        {
            tbx_MailPagos.Text = tbx_MailPagos.Text.Trim();
            valmailpagos = v.ValidarMail(tbx_MailPagos.Text);
            if (valmailpagos == 0) { errorProvider1.SetError(lbl_MailPagos, "El correo electrónico ingresado no tiene el formato correcto.\nEste campo no puede quedar vacío."); }
            else { errorProvider1.SetError(lbl_MailPagos, ""); }
        }

        private void cbx_Mañana_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == false && cbx_Tarde.Checked == false && cbx_Noche.Checked == false)
            { valdeposiciones = 0; }
            else { valdeposiciones = 1; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "No ha seleccionado ninguna opcion. Debe escoger al menos una."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void cbx_Tarde_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == false && cbx_Tarde.Checked == false && cbx_Noche.Checked == false)
            { valdeposiciones = 0; }
            else { valdeposiciones = 1; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "No ha seleccionado ninguna opcion. Debe escoger al menos una."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void cbx_Noche_Leave(object sender, EventArgs e)
        {
            if (cbx_Mañana.Checked == false && cbx_Tarde.Checked == false && cbx_Noche.Checked == false)
            { valdeposiciones = 0; }
            else { valdeposiciones = 1; }
            if (valdeposiciones == 0) { errorProvider1.SetError(lbl_Deposiciones, "No ha seleccionado ninguna opcion. Debe escoger al menos una."); }
            else { errorProvider1.SetError(lbl_Deposiciones, ""); }
        }

        private void tbx_Visual_Leave(object sender, EventArgs e)
        {
            tbx_Visual.Text = tbx_Visual.Text.Trim();

        }

        private void tbx_RutApoderado_TextChanged(object sender, EventArgs e)
        {
            tbx_RutApoderado.Text = tbx_RutApoderado.Text.Trim();
            if (tbx_RutApoderado.Text.Length > 6)
            {
                try
                {
                    int rut = int.Parse(tbx_RutApoderado.Text);
                    Apoderado aux = BEDE.Apoderado.Single(c => c.rut_apoderado == rut);
                    tbx_DigitoVerificadorApoderado.Enabled = false;
                    int b = 0;
                    string[] nombre = aux.nombre.Split(' ');
                    foreach (string algo in nombre)
                    {
                        if (b == 2) { tbx_ApellidoMApoderado.Text = algo.ToString(); tbx_ApellidoMApoderado.Enabled = false; valapellidomapoderado = 1; }
                        if (b == 1) { tbx_ApellidoPApoderado.Text = algo.ToString(); b++; tbx_ApellidoPApoderado.Enabled = false; valapellidopapoderado = 1; }
                        if (b == 0) { tbx_NombreApoderado.Text = algo.ToString(); b++; tbx_NombreApoderado.Enabled = false; valnombreapoderado = 1; }
                    }
                    tbx_TelefonoApoderado.Text = aux.fono.ToString(); tbx_TelefonoApoderado.Enabled = false; valfonoapoderado = 1;
                    tbx_CelularApoderado.Text = aux.celular.ToString(); tbx_CelularApoderado.Enabled = false; valcelularapoderado = 1;
                    tbx_LugarTrabajoApoderado.Text = aux.lugar_trabajo.ToString(); tbx_LugarTrabajoApoderado.Enabled = false; vallugartrabajoapoderado = 1;
                    tbx_MailApoderado.Text = aux.email.ToString(); tbx_MailApoderado.Enabled = false; valmailapoderado = 1;
                    valrutapoderado = 1;
                    errorProvider1.SetError(lbl_RutApoderado, "");
                    errorProvider1.SetError(lbl_NombreApoderado, "");
                    errorProvider1.SetError(lbl_ApellidoPApoderado, "");
                    errorProvider1.SetError(lbl_ApellidoMApoderado, "");
                    errorProvider1.SetError(lbl_FonoApoderado, "");
                    errorProvider1.SetError(lbl_CelularApoderado, "");
                    errorProvider1.SetError(lbl_TrabajoApoderado, "");
                    errorProvider1.SetError(lbl_MailApoderado, "");
                    apoderadoyaexiste = 1;
                }
                catch
                {
                    tbx_DigitoVerificadorApoderado.Enabled = true;
                    tbx_NombreApoderado.Enabled = true;
                    tbx_NombreApoderado.Clear();
                    tbx_ApellidoPApoderado.Enabled = true;
                    tbx_ApellidoPApoderado.Clear();
                    tbx_ApellidoMApoderado.Enabled = true;
                    tbx_ApellidoMApoderado.Clear();
                    tbx_TelefonoApoderado.Enabled = true;
                    tbx_TelefonoApoderado.Clear();
                    tbx_CelularApoderado.Enabled = true;
                    tbx_CelularApoderado.Clear();
                    tbx_LugarTrabajoApoderado.Enabled = true;
                    tbx_LugarTrabajoApoderado.Clear();
                    tbx_MailApoderado.Enabled = true;
                    tbx_MailApoderado.Clear();
                    apoderadoyaexiste = 0;
                }
            }
        }

        private void tbx_RutPadre_TextChanged(object sender, EventArgs e)
        {
            tbx_RutPadre.Text = tbx_RutPadre.Text.Trim();
            if (tbx_RutPadre.Text.Length > 6)
            {
                try
                {
                    int rut = int.Parse(tbx_RutPadre.Text);
                    Padre aux = BEDE.Padre.Single(c => c.rut_padre == rut);
                    tbx_DigitoPadre.Enabled = false;
                    int b = 0;
                    string[] nombre = aux.nombre.Split(' ');
                    foreach (string algo in nombre)
                    {
                        if (b == 2) { tbx_ApellidoMPadre.Text = algo.ToString(); tbx_ApellidoMPadre.Enabled = false; valapellidompadre = 1; }
                        if (b == 1) { tbx_ApellidoPPadre.Text = algo.ToString(); b++; tbx_ApellidoPPadre.Enabled = false; valapellidoppadre = 1; }
                        if (b == 0) { tbx_NombrePadre.Text = algo.ToString(); b++; tbx_NombrePadre.Enabled = false; valnombrepadre = 1; }
                    }
                    tbx_FonoPadre.Text = aux.fono.ToString(); tbx_FonoPadre.Enabled = false; valfonopadre = 1;
                    tbx_CeluPadre.Text = aux.celular.ToString(); tbx_CeluPadre.Enabled = false; valcelupadre = 1;
                    tbx_TrabajoPadre.Text = aux.lugar_trabajo.ToString(); tbx_TrabajoPadre.Enabled = false; valtrabajopadre = 1;
                    tbx_MailPadre.Text = aux.email.ToString(); tbx_MailPadre.Enabled = false; valmailpadre = 1;
                    valrutpadre = 1;
                    errorProvider1.SetError(lbl_RutPadre, "");
                    errorProvider1.SetError(lbl_NombrePadre, "");
                    errorProvider1.SetError(lbl_ApellidoPPadre, "");
                    errorProvider1.SetError(lbl_ApellidoMPadre, "");
                    errorProvider1.SetError(lbl_FonoPadre, "");
                    errorProvider1.SetError(lbl_CeluPadre, "");
                    errorProvider1.SetError(lbl_TrabajoPadre, "");
                    errorProvider1.SetError(lbl_MailPadre, "");
                    padreyaexiste = 1;
                }
                catch
                {
                    tbx_DigitoPadre.Enabled = true;
                    tbx_NombrePadre.Enabled = true;
                    tbx_NombrePadre.Clear();
                    tbx_ApellidoPPadre.Enabled = true;
                    tbx_ApellidoPPadre.Clear();
                    tbx_ApellidoMPadre.Enabled = true;
                    tbx_ApellidoMPadre.Clear();
                    tbx_FonoPadre.Enabled = true;
                    tbx_FonoPadre.Clear();
                    tbx_CeluPadre.Enabled = true;
                    tbx_CeluPadre.Clear();
                    tbx_TrabajoPadre.Enabled = true;
                    tbx_TrabajoPadre.Clear();
                    tbx_MailPadre.Enabled = true;
                    tbx_MailPadre.Clear();
                    padreyaexiste = 0;
                }
            }
        }

        private void tbx_RutMadre_TextChanged(object sender, EventArgs e)
        {
            tbx_RutMadre.Text = tbx_RutMadre.Text.Trim();
            if (tbx_RutMadre.Text.Length > 6)
            {
                try
                {
                    int rut = int.Parse(tbx_RutMadre.Text);
                    Madre aux = BEDE.Madre.Single(c => c.rut_madre == rut);
                    tbx_DigitoMadre.Enabled = false;
                    int b = 0;
                    string[] nombre = aux.nombre.Split(' ');
                    foreach (string algo in nombre)
                    {
                        if (b == 2) { tbx_ApellidoMMadre.Text = algo.ToString(); tbx_ApellidoMMadre.Enabled = false; valapellidommadre = 1; }
                        if (b == 1) { tbx_ApellidoPMadre.Text = algo.ToString(); b++; tbx_ApellidoPMadre.Enabled = false; valapellidopmadre = 1; }
                        if (b == 0) { tbx_NombreMadre.Text = algo.ToString(); b++; tbx_NombreMadre.Enabled = false; valnombremadre = 1; }
                    }
                    tbx_FonoMadre.Text = aux.fono.ToString(); tbx_FonoMadre.Enabled = false; valfonomadre = 1;
                    tbx_CeluMadre.Text = aux.celular.ToString(); tbx_CeluMadre.Enabled = false; valcelumadre = 1;
                    tbx_TrabajoMadre.Text = aux.lugar_trabajo.ToString(); tbx_TrabajoMadre.Enabled = false; valtrabajomadre = 1;
                    tbx_MailMadre.Text = aux.email.ToString(); tbx_MailMadre.Enabled = false; valmailmadre = 1;
                    valrutmadre = 1;
                    errorProvider1.SetError(lbl_RutMadre, "");
                    errorProvider1.SetError(lbl_NombreMadre, "");
                    errorProvider1.SetError(lbl_ApellidoPMadre, "");
                    errorProvider1.SetError(lbl_ApellidoMMadre, "");
                    errorProvider1.SetError(lbl_FonoMadre, "");
                    errorProvider1.SetError(lbl_CeluMadre, "");
                    errorProvider1.SetError(lbl_TrabajoMadre, "");
                    errorProvider1.SetError(lbl_MailMadre, "");
                    madreyaexiste = 1;
                }
                catch 
                {
                    tbx_DigitoMadre.Enabled = true;
                    tbx_NombreMadre.Enabled = true;
                    tbx_NombreMadre.Clear();
                    tbx_ApellidoPMadre.Enabled = true;
                    tbx_ApellidoPMadre.Clear();
                    tbx_ApellidoMMadre.Enabled = true;
                    tbx_ApellidoMMadre.Clear();
                    tbx_FonoMadre.Enabled = true;
                    tbx_FonoMadre.Clear();
                    tbx_CeluMadre.Enabled = true;
                    tbx_CeluMadre.Clear();
                    tbx_TrabajoMadre.Enabled = true;
                    tbx_TrabajoMadre.Clear();
                    tbx_MailMadre.Enabled = true;
                    tbx_MailMadre.Clear();
                    madreyaexiste = 0;
                }
            }
        }

        private void lbx_Convivientes_SelectedIndexChanged(object sender, EventArgs e)
        {
            btn_BorrarPersona.Enabled = true;
        }

        private void btn_Limpiar_Click(object sender, EventArgs e)
        {
            LimpiarFormulario();
        }
    }
}
